from flask import jsonify
from flask_jwt_extended import verify_jwt_in_request, get_jwt
import functools  # 导入functools模块

def admin_required():
    """验证管理员权限的装饰器"""
    def wrapper(fn):
        @functools.wraps(fn)  # 保留原函数元数据
        def decorator(*args, **kwargs):
            # 验证JWT是否有效
            verify_jwt_in_request()
            # 获取JWT中的角色信息
            claims = get_jwt()
            if claims.get("role") not in ["admin", "super_admin"]:
                return jsonify({"code": -1, "msg": "无管理员权限"}), 403
            return fn(*args, **kwargs)
        return decorator
    return wrapper